package br.ufc.si.managedBean;

import java.io.IOException;

import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.context.Flash;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import modelo.Imovel;
import modelo.Usuario;
import dao.ImovelDao;

@ManagedBean(name = "cadastroImovelBean")
public class CadastroImovelBean {
	private Imovel imovel = new Imovel();

	private ImovelDao imovelDao = new ImovelDao();
	
	private String msg;

	public ImovelDao getImovelDao() {
		return imovelDao;
	}

	public void setImovelDao(ImovelDao imovelDao) {
		this.imovelDao = imovelDao;
	}
	
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public Imovel getImovel() {
		return imovel;
	}

	public void setImovel(Imovel imovel) {
		this.imovel = imovel;
	}

	public String paginaImovel(){
		
	    return "/imovel/cadastrar_imovel";
	}
	
	public String cadastrar() throws IOException, ClassNotFoundException{
		HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		Usuario usuario = new Usuario();
		usuario.setEmail((String)session.getAttribute("email"));
		imovel.setUsuario(usuario);
		boolean cadastro = imovelDao.cadastrar(imovel);
		if(cadastro==true){
			//Para não aparecer os campos preenchidos depois do imovel cadastrado.
			imovel = new Imovel();
	
			msg = "Imóvel cadastrado com sucesso";
			
			return "/locador/indexLocador?faces-redirect=true";
			
		}else
		
			msg = "O imóvel já está cadastrado";
		
			return "/locador/indexLocador?faces-redirect=true";
		
		
		}
	
	
	public String cancelar() {
		return "/locador/indexLocador";
	}

	public String atualizar() throws ClassNotFoundException{
		
		boolean atualizacao = imovelDao.atualizar(imovel);
		if(atualizacao==true){
	
			msg = "Imóvel atualizado";
			
			return "/locador/indexLocador";
			
		}else
		
			return "/locador/indexLocador";
		
	}

	
	public String visualizar(){
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		try {
			imovel = imovelDao.buscar(Integer.parseInt(request.getParameter("id")));
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		return "/imovel/visualizar_imovel";
	}
	
	public boolean getMostraTabela(){
		return imovelDao.getLista().size() > 0;
	}
	
	public String editar(){
		
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		try {
			imovel = imovelDao.buscar(Integer.parseInt(request.getParameter("id")));
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		
		return "/imovel/editar_imovel";
	}
	
		public String excluir(){
		
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		imovelDao.excluir(Integer.parseInt(request.getParameter("id")));
		
		return "/locador/indexLocador?faces-redirect=true";
	}
	
	public String adicionarFotos(){
		HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		
		HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		session.setAttribute("idImovel", request.getParameter("id"));
		
		return "/imovel/adicionar_fotos";
	}
	
}
